import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.IOException;
import java.net.URI;

public class Hdfs_List {
    static Configuration conf = new Configuration(); //创建HDFS配置信息对象，自动搜索报路径下的Hadoop配置文件
    static FileSystem fs;//基于Configuration创建FileSystem对象 为了调用FileSystem里的相关方法对HDFS文件进行操作（创建、拷贝、删除）




    public static void main(String [] mrgs) throws Exception{
     list();
  //xiaZai();
//      shangChuan();
//        create();
    }

    /**
     * 查看根目录下的文件列表
     * @throws IOException
     */
    public static void list() throws IOException{
        fs = FileSystem.get(conf);
        Path path = new Path("/");
        FileStatus[] list = fs.listStatus(path);
        for(FileStatus f : list){
            System.out.println(f.getPath());
        }
    }

    /**
     * 将HDFS的文件下载到本地
     * @throws IOException
     */
    public static void xiaZai() throws  IOException{
        fs = FileSystem.get(conf);
        fs.copyToLocalFile(false,new Path("/edits.txt"),new Path("E:/桌面"),true);
        fs.close();
    }

    public static void shangChuan() throws IOException{
        fs = FileSystem.get(conf);
        fs.copyFromLocalFile(false,new Path("C:\\Users\\Administrator\\Desktop\\java\\qq.txt"),new Path("/"));
    }

    /**
     * 创建目录和文件
     */
    public static void create()throws Exception{
        fs = FileSystem.get(new URI("hdfs://192.168.6.129:9000"),conf,"root");
        Path path = new Path("/qq");
        fs.mkdirs(path);
        System.out.println("创建成功");
    }
}
